((e, n) => {
  "function" == typeof define && (define.amd || define.cmd) ? define(function() {
    return n(e)
  }) : n(e, !0)
})(this, function(r, e) {
  var a, c, n, i, t, s, d, o, l, u, p, f, m, g, h, S, I, y, v, _, k, w;
  if (!r.jWeixin) return a = {
      config: "preVerifyJSAPI",
      onMenuShareTimeline: "menu:share:timeline",
      onMenuShareAppMessage: "menu:share:appmessage",
      onMenuShareQQ: "menu:share:qq",
      onMenuShareWeibo: "menu:share:weiboApp",
      onMenuShareQZone: "menu:share:QZone",
      previewImage: "imagePreview",
      getLocation: "geoLocation",
      openProductSpecificView: "openProductViewWithPid",
      addCard: "batchAddCard",
      openCard: "batchViewCard",
      chooseWXPay: "getBrandWCPayRequest",
      openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
      startSearchBeacons: "startMonitoringBeacons",
      stopSearchBeacons: "stopMonitoringBeacons",
      onSearchBeacons: "onBeaconsInRange",
      consumeAndShareCard: "consumedShareCard",
      openAddress: "editAddress"
    }, c = (() => {
      var e, n = {};
      for (e in a) n[a[e]] = e;
      return n
    })(), i = (n = r.document).title, t = navigator.userAgent.toLowerCase(), f = navigator.platform.toLowerCase(),
    s = !(!f.match("mac") && !f.match("win")), d = -1 != t.indexOf("wxdebugger"), o = -1 != t.indexOf(
      "micromessenger"), l = -1 != t.indexOf("android"), u = -1 != t.indexOf("iphone") || -1 != t.indexOf("ipad"),
    p = (f = t.match(/micromessenger\/(\d+\.\d+\.\d+)/) || t.match(/micromessenger\/(\d+\.\d+)/)) ? f[1] : "", m = {
      initStartTime: L(),
      initEndTime: 0,
      preVerifyStartTime: 0,
      preVerifyEndTime: 0
    }, g = {
      version: 1,
      appId: "",
      initTime: 0,
      preVerifyTime: 0,
      networkType: "",
      isPreVerifyOk: 1,
      systemType: u ? 1 : l ? 2 : -1,
      clientVersion: p,
      url: encodeURIComponent(location.href)
    }, h = {}, S = {
      _completes: []
    }, I = {
      state: 0,
      data: {}
    }, B(function() {
      m.initEndTime = L()
    }), y = !1, v = [], _ = {
      config: function(e) {
        C("config", h = e);
        var o = !1 !== h.check;
        B(function() {
          if (o) T(a.config, {
            verifyJsApiList: V(h.jsApiList)
          }, (S._complete = function(e) {
            m.preVerifyEndTime = L(), I.state = 1, I.data = e
          }, S.success = function(e) {
            g.isPreVerifyOk = 0
          }, S.fail = function(e) {
            S._fail ? S._fail(e) : I.state = -1
          }, (t = S._completes).push(function() {
            var n;
            s || d || h.debug || p < "6.0.2" || g.systemType < 0 || (n = new Image, g.appId = h.appId,
              g.initTime = m.initEndTime - m.initStartTime, g.preVerifyTime = m.preVerifyEndTime - m
              .preVerifyStartTime, _.getNetworkType({
                isInnerInvoke: !0,
                success: function(e) {
                  g.networkType = e.networkType, n.src =
                    "https://open.weixin.qq.com/sdk/report?v=" + g.version + "&o=" + g
                    .isPreVerifyOk + "&s=" + g.systemType + "&c=" + g.clientVersion + "&a=" + g
                    .appId + "&n=" + g.networkType + "&i=" + g.initTime + "&p=" + g
                    .preVerifyTime + "&u=" + g.url
                }
              }))
          }), S.complete = function(e) {
            for (var n = 0, i = t.length; n < i; ++n) t[n]();
            S._completes = []
          }, S)), m.preVerifyStartTime = L();
          else {
            I.state = 1;
            for (var e = S._completes, n = 0, i = e.length; n < i; ++n) e[n]();
            S._completes = []
          }
          var t
        }), _.invoke || (_.invoke = function(e, n, i) {
          r.WeixinJSBridge && WeixinJSBridge.invoke(e, P(n), i)
        }, _.on = function(e, n) {
          r.WeixinJSBridge && WeixinJSBridge.on(e, n)
        })
      },
      ready: function(e) {
        (0 != I.state || (S._completes.push(e), !o && h.debug)) && e()
      },
      error: function(e) {
        p < "6.0.2" || (-1 == I.state ? e(I.data) : S._fail = e)
      },
      checkJsApi: function(e) {
        T("checkJsApi", {
          jsApiList: V(e.jsApiList)
        }, (e._complete = function(e) {
          l && (i = e.checkResult) && (e.checkResult = JSON.parse(i));
          var n, i = e,
            t = i.checkResult;
          for (n in t) {
            var o = c[n];
            o && (t[o] = t[n], delete t[n])
          }
        }, e))
      },
      onMenuShareTimeline: function(e) {
        M(a.onMenuShareTimeline, {
          complete: function() {
            T("shareTimeline", {
              title: e.title || i,
              desc: e.title || i,
              img_url: e.imgUrl || "",
              link: e.link || location.href,
              type: e.type || "link",
              data_url: e.dataUrl || ""
            }, e)
          }
        }, e)
      },
      onMenuShareAppMessage: function(n) {
        M(a.onMenuShareAppMessage, {
          complete: function(e) {
            "favorite" === e.scene ? T("sendAppMessage", {
              title: n.title || i,
              desc: n.desc || "",
              link: n.link || location.href,
              img_url: n.imgUrl || "",
              type: n.type || "link",
              data_url: n.dataUrl || ""
            }) : T("sendAppMessage", {
              title: n.title || i,
              desc: n.desc || "",
              link: n.link || location.href,
              img_url: n.imgUrl || "",
              type: n.type || "link",
              data_url: n.dataUrl || ""
            }, n)
          }
        }, n)
      },
      onMenuShareQQ: function(e) {
        M(a.onMenuShareQQ, {
          complete: function() {
            T("shareQQ", {
              title: e.title || i,
              desc: e.desc || "",
              img_url: e.imgUrl || "",
              link: e.link || location.href
            }, e)
          }
        }, e)
      },
      onMenuShareWeibo: function(e) {
        M(a.onMenuShareWeibo, {
          complete: function() {
            T("shareWeiboApp", {
              title: e.title || i,
              desc: e.desc || "",
              img_url: e.imgUrl || "",
              link: e.link || location.href
            }, e)
          }
        }, e)
      },
      onMenuShareQZone: function(e) {
        M(a.onMenuShareQZone, {
          complete: function() {
            T("shareQZone", {
              title: e.title || i,
              desc: e.desc || "",
              img_url: e.imgUrl || "",
              link: e.link || location.href
            }, e)
          }
        }, e)
      },
      updateTimelineShareData: function(e) {
        T("updateTimelineShareData", {
          title: e.title,
          link: e.link,
          imgUrl: e.imgUrl
        }, e)
      },
      updateAppMessageShareData: function(e) {
        T("updateAppMessageShareData", {
          title: e.title,
          desc: e.desc,
          link: e.link,
          imgUrl: e.imgUrl
        }, e)
      },
      startRecord: function(e) {
        T("startRecord", {}, e)
      },
      stopRecord: function(e) {
        T("stopRecord", {}, e)
      },
      onVoiceRecordEnd: function(e) {
        M("onVoiceRecordEnd", e)
      },
      playVoice: function(e) {
        T("playVoice", {
          localId: e.localId
        }, e)
      },
      pauseVoice: function(e) {
        T("pauseVoice", {
          localId: e.localId
        }, e)
      },
      stopVoice: function(e) {
        T("stopVoice", {
          localId: e.localId
        }, e)
      },
      onVoicePlayEnd: function(e) {
        M("onVoicePlayEnd", e)
      },
      uploadVoice: function(e) {
        T("uploadVoice", {
          localId: e.localId,
          isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
        }, e)
      },
      downloadVoice: function(e) {
        T("downloadVoice", {
          serverId: e.serverId,
          isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
        }, e)
      },
      translateVoice: function(e) {
        T("translateVoice", {
          localId: e.localId,
          isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
        }, e)
      },
      chooseImage: function(e) {
        T("chooseImage", {
          scene: "1|2",
          count: e.count || 9,
          sizeType: e.sizeType || ["original", "compressed"],
          sourceType: e.sourceType || ["album", "camera"]
        }, (e._complete = function(e) {
          if (l) {
            var n = e.localIds;
            try {
              n && (e.localIds = JSON.parse(n))
            } catch (e) {}
          }
        }, e))
      },
      getLocation: function(e) {},
      getLocation: function(e) {
        e = e || {}, T(a.getLocation, {
          type: e.type || "wgs84"
        }, (e._complete = function(e) {
          delete e.type
        }, e))
      },
      previewImage: function(e) {
        T(a.previewImage, {
          current: e.current,
          urls: e.urls
        }, e)
      },
      uploadImage: function(e) {
        T("uploadImage", {
          localId: e.localId,
          isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
        }, e)
      },
      downloadImage: function(e) {
        T("downloadImage", {
          serverId: e.serverId,
          isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
        }, e)
      },
      getLocalImgData: function(e) {
        !1 === y ? (y = !0, T("getLocalImgData", {
          localId: e.localId
        }, (e._complete = function(e) {
          var n;
          y = !1, 0 < v.length && (n = v.shift(), wx.getLocalImgData(n))
        }, e))) : v.push(e)
      },
      getNetworkType: function(e) {
        T("getNetworkType", {}, (e._complete = function(e) {
          var n = e,
            e = n.errMsg,
            i = (n.errMsg = "getNetworkType:ok", n.subtype);
          if (delete n.subtype, i) n.networkType = i;
          else {
            var i = e.indexOf(":"),
              t = e.substring(i + 1);
            switch (t) {
              case "wifi":
              case "edge":
              case "wwan":
                n.networkType = t;
                break;
              default:
                n.errMsg = "getNetworkType:fail"
            }
          }
        }, e))
      },
      openLocation: function(e) {
        T("openLocation", {
          latitude: e.latitude,
          longitude: e.longitude,
          name: e.name || "",
          address: e.address || "",
          scale: e.scale || 28,
          infoUrl: e.infoUrl || ""
        }, e)
      },
      hideOptionMenu: function(e) {
        T("hideOptionMenu", {}, e)
      },
      showOptionMenu: function(e) {
        T("showOptionMenu", {}, e)
      },
      closeWindow: function(e) {
        T("closeWindow", {}, e = e || {})
      },
      hideMenuItems: function(e) {
        T("hideMenuItems", {
          menuList: e.menuList
        }, e)
      },
      showMenuItems: function(e) {
        T("showMenuItems", {
          menuList: e.menuList
        }, e)
      },
      hideAllNonBaseMenuItem: function(e) {
        T("hideAllNonBaseMenuItem", {}, e)
      },
      showAllNonBaseMenuItem: function(e) {
        T("showAllNonBaseMenuItem", {}, e)
      },
      scanQRCode: function(e) {
        T("scanQRCode", {
          needResult: (e = e || {}).needResult || 0,
          scanType: e.scanType || ["qrCode", "barCode"]
        }, (e._complete = function(e) {
          var n;
          u && (n = e.resultStr) && (n = JSON.parse(n), e.resultStr = n && n.scan_code && n.scan_code
            .scan_result)
        }, e))
      },
      openAddress: function(e) {
        T(a.openAddress, {}, (e._complete = function(e) {
          (e = e).postalCode = e.addressPostalCode, delete e.addressPostalCode, e.provinceName = e
            .proviceFirstStageName, delete e.proviceFirstStageName, e.cityName = e
            .addressCitySecondStageName, delete e.addressCitySecondStageName, e.countryName = e
            .addressCountiesThirdStageName, delete e.addressCountiesThirdStageName, e.detailInfo = e
            .addressDetailInfo, delete e.addressDetailInfo
        }, e))
      },
      openProductSpecificView: function(e) {
        T(a.openProductSpecificView, {
          pid: e.productId,
          view_type: e.viewType || 0,
          ext_info: e.extInfo
        }, e)
      },
      addCard: function(e) {
        for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
          var r = n[t],
            r = {
              card_id: r.cardId,
              card_ext: r.cardExt
            };
          i.push(r)
        }
        T(a.addCard, {
          card_list: i
        }, (e._complete = function(e) {
          if (n = e.card_list) {
            for (var n, i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
              var o = n[i];
              o.cardId = o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!o.is_succ, delete o.card_id,
                delete o.card_ext, delete o.is_succ
            }
            e.cardList = n, delete e.card_list
          }
        }, e))
      },
      chooseCard: function(e) {
        T("chooseCard", {
          app_id: h.appId,
          location_id: e.shopId || "",
          sign_type: e.signType || "SHA1",
          card_id: e.cardId || "",
          card_type: e.cardType || "",
          card_sign: e.cardSign,
          time_stamp: e.timestamp + "",
          nonce_str: e.nonceStr
        }, (e._complete = function(e) {
          e.cardList = e.choose_card_info, delete e.choose_card_info
        }, e))
      },
      openCard: function(e) {
        for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
          var r = n[t],
            r = {
              card_id: r.cardId,
              code: r.code
            };
          i.push(r)
        }
        T(a.openCard, {
          card_list: i
        }, e)
      },
      consumeAndShareCard: function(e) {
        T(a.consumeAndShareCard, {
          consumedCardId: e.cardId,
          consumedCode: e.code
        }, e)
      },
      chooseWXPay: function(e) {
        T(a.chooseWXPay, x(e), e)
      },
      openEnterpriseRedPacket: function(e) {
        T(a.openEnterpriseRedPacket, x(e), e)
      },
      startSearchBeacons: function(e) {
        T(a.startSearchBeacons, {
          ticket: e.ticket
        }, e)
      },
      stopSearchBeacons: function(e) {
        T(a.stopSearchBeacons, {}, e)
      },
      onSearchBeacons: function(e) {
        M(a.onSearchBeacons, e)
      },
      openEnterpriseChat: function(e) {
        T("openEnterpriseChat", {
          useridlist: e.userIds,
          chatname: e.groupName
        }, e)
      },
      launchMiniProgram: function(e) {
        T("launchMiniProgram", {
          targetAppId: e.targetAppId,
          path: (e => {
            var n;
            if ("string" == typeof e && 0 < e.length) return n = e.split("?")[0], n += ".html", void 0 !==
              (e = e.split("?")[1]) ? n + "?" + e : n
          })(e.path),
          envVersion: e.envVersion
        }, e)
      },
      miniProgram: {
        navigateBack: function(e) {
          e = e || {}, B(function() {
            T("invokeMiniProgramAPI", {
              name: "navigateBack",
              arg: {
                delta: e.delta || 1
              }
            }, e)
          })
        },
        navigateTo: function(e) {
          B(function() {
            T("invokeMiniProgramAPI", {
              name: "navigateTo",
              arg: {
                url: e.url
              }
            }, e)
          })
        },
        redirectTo: function(e) {
          B(function() {
            T("invokeMiniProgramAPI", {
              name: "redirectTo",
              arg: {
                url: e.url
              }
            }, e)
          })
        },
        switchTab: function(e) {
          B(function() {
            T("invokeMiniProgramAPI", {
              name: "switchTab",
              arg: {
                url: e.url
              }
            }, e)
          })
        },
        reLaunch: function(e) {
          B(function() {
            T("invokeMiniProgramAPI", {
              name: "reLaunch",
              arg: {
                url: e.url
              }
            }, e)
          })
        },
        postMessage: function(e) {
          B(function() {
            T("invokeMiniProgramAPI", {
              name: "postMessage",
              arg: e.data || {}
            }, e)
          })
        },
        getEnv: function(e) {
          B(function() {
            e({
              miniprogram: "miniprogram" === r.__wxjs_environment
            })
          })
        }
      }
    }, k = 1, w = {}, n.addEventListener("error", function(e) {
      var n, i, t;
      l || (t = (n = e.target).tagName, i = n.src, "IMG" != t && "VIDEO" != t && "AUDIO" != t && "SOURCE" != t) ||
        -1 != i.indexOf("wxlocalresource://") && (e.preventDefault(), e.stopPropagation(), (t = n["wx-id"]) || (
          t = k++, n["wx-id"] = t), w[t] || (w[t] = !0, wx.ready(function() {
          wx.getLocalImgData({
            localId: i,
            success: function(e) {
              n.src = e.localData
            }
          })
        })))
    }, !0), n.addEventListener("load", function(e) {
      var n;
      l || (n = (e = e.target).tagName, "IMG" != n && "VIDEO" != n && "AUDIO" != n && "SOURCE" != n) || (n = e[
        "wx-id"]) && (w[n] = !1)
    }, !0), e && (r.wx = r.jWeixin = _), _;

  function T(n, e, i) {
    r.WeixinJSBridge ? WeixinJSBridge.invoke(n, P(e), function(e) {
      A(n, e, i)
    }) : C(n, i)
  }

  function M(n, i, t) {
    r.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
      t && t.trigger && t.trigger(e), A(n, e, i)
    }) : C(n, t || i)
  }

  function P(e) {
    return (e = e || {}).appId = h.appId, e.verifyAppId = h.appId, e.verifySignType = "sha1", e.verifyTimestamp = h
      .timestamp + "", e.verifyNonceStr = h.nonceStr, e.verifySignature = h.signature, e
  }

  function x(e) {
    return {
      timeStamp: e.timestamp + "",
      nonceStr: e.nonceStr,
      package: e.package,
      paySign: e.paySign,
      signType: e.signType || "SHA1"
    }
  }

  function A(e, n, i) {
    "openEnterpriseChat" == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail;
    var t = n.errMsg,
      e = (t || (t = n.err_msg, delete n.err_msg, t = ((e, n) => {
          var i, t = c[e];
          return t && (e = t), t = "ok", n && (i = n.indexOf(":"), "access denied" != (t = (t = (t = -1 != (t = -
            1 != (t = "failed" == (t = "confirm" == (t = n.substring(i + 1)) ? "ok" : t) ? "fail" : t)
            .indexOf("failed_") ? t.substring(7) : t).indexOf("fail_") ? t.substring(5) : t).replace(/_/g,
            " ")).toLowerCase()) && "no permission to execute" != t || (t = "permission denied"), "" == (t =
            "config" == e && "function not exist" == t ? "ok" : t)) && (t = "fail"), n = e + ":" + t
        })(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n), delete i._complete), t = n.errMsg || "",
        h.debug && !i.isInnerInvoke && alert(JSON.stringify(n)), t.indexOf(":"));
    switch (t.substring(e + 1)) {
      case "ok":
        i.success && i.success(n);
        break;
      case "cancel":
        i.cancel && i.cancel(n);
        break;
      default:
        i.fail && i.fail(n)
    }
    i.complete && i.complete(n)
  }

  function V(e) {
    if (e) {
      for (var n = 0, i = e.length; n < i; ++n) {
        var t = e[n],
          t = a[t];
        t && (e[n] = t)
      }
      return e
    }
  }

  function C(e, n) {
    var i;
    !h.debug || n && n.isInnerInvoke || ((i = c[e]) && (e = i), n && n._complete && delete n._complete, console.log(
      '"' + e + '",', n || ""))
  }

  function L() {
    return (new Date).getTime()
  }

  function B(e) {
    o && (r.WeixinJSBridge ? e() : n.addEventListener && n.addEventListener("WeixinJSBridgeReady", e, !1))
  }
});